A federated system is a collection of cooperating but autonomous data sources belonging to a federation. The autonomous data sources belonging to the federation cooperate with each other yet maintain some degree of autonomy. A federated system allows a client to send requests to multiple data sources with the use of a single federated query. A federated query is a query that contains several source queries, and each source query is specific to a data source. A source query that is specific to a data source is written in a format that is understandable by the data source and may be executable at the data source.
Today, data replication and failover are important properties of data sources and enterprise systems, and this is emphasized in data federation engines and service-oriented architectures. In a federated system, a federated server may receive a federated query from a client and send each source query embedded in the federated query to the appropriate data source for execution. When a client submits a federated query, the federated server may return a result of the federated query by retrieving results from the applicable data sources.
When a federated system federates many different data sources, a higher probability exists that some queries may fail due to data sources changing their query models. While conducting data federation, if a source query is sent to a data source that has updated its query model, this may introduce an immediate breakdown of the whole data federation scenario. For example, clients may continue submitting queries in the old format rather than submitting queries in the updated format to the data source. This breakdown may be manifested to clients in the form of query failure. Additionally, if even a single source query fails among many other source queries that were embedded in a federated query, the federated query as a whole may be rendered unusable. Accordingly, the federated server may be prevented from responding to the federated query because the result would have missing data that is stored at the data source that changed its query model.
A conventional approach to solving this problem of clients sending queries in the old format to data sources that have been updated involves automated testing. Using automated testing, the tests typically execute queries using the updated query models. This problem may be more pronounced in Platform-as-a-Service (PaaS) solutions, which usually have a wider range of clients for a data source.
A solution to this problem is quite complicated because data federation aims to work with large amounts of data. The solution to this problem becomes more complex as more autonomous data sources are added to the federation. Moreover, in the case of data federation, the data source is typically not under the control of the data federation architect, and the clients are typically not under direct control of the data source administrator.